/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import facade.EmpresaFacadeLocal;
import facade.EstadisticaFacadeLocal;
import java.util.Date;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import java.util.LinkedList;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import entity.Estadistica;
import entity.Empresa;
import java.text.SimpleDateFormat;
import java.util.List;

/**
 *
 * @author ari
 */
@Stateless
public class BeanEstadistica implements BeanEstadisticaRemote {
    @EJB
    private EmpresaFacadeLocal empresaFacade;
    @EJB
    private EstadisticaFacadeLocal estadisticaFacade;
    @PersistenceContext(unitName = "BolsaValor-ejbPU")
    private EntityManager em;
    
    static final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");

    @Override
    public LinkedList obtenerEstadistica(Date fecha) {
        LinkedList temporal = new LinkedList();
        LinkedList temporal2 = new LinkedList();
            
        try {
            Estadistica hoy = em.createQuery("SELECT a FROM Estadistica a WHERE a.fecha = :fecha", Estadistica.class)
                    .setParameter("fecha", format.format(fecha))
                    .getSingleResult();
            
            List<Empresa> emp = em.createQuery("SELECT e FROM Empresa e JOIN e.estadistica i WHERE i.fecha = :fecha", Empresa.class)
                    .setParameter("fecha", format.format(fecha))
                    .getResultList();

            for(Empresa t : emp) {
                temporal2.add(t.toString());
            }

            temporal.add(hoy.getTransacciones());
            temporal.add(hoy.getVentaa());
            temporal.add(hoy.getVentad());
            temporal.add(hoy.getCompraa());
            temporal.add(hoy.getComprad());
            temporal.add(temporal2);
        } catch (Exception e) {}    // No hace nada (devuelve vacio)
        
        return temporal;
    }

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    public void persist(Object object) {
        em.persist(object);
    }

    @Override
    public boolean addEstadistica(int trans, int ventaa, double ventad, int compraa, double comprad, String empresa) {
        Estadistica i;
        Date date = new Date();
        String fechahoy = format.format(date);
        
        try{
            
            i = em.createQuery("SELECT a FROM Estadistica a WHERE a.fecha = :fecha", Estadistica.class)
                    .setParameter("fecha", fechahoy)
                    .getSingleResult();

            i.setCompraa(i.getCompraa() + compraa);
            i.setComprad(i.getComprad() + comprad);
            i.setVentaa(i.getVentaa() + ventaa);
            i.setVentad(i.getVentad() + ventad);
            i.setTransacciones(i.getTransacciones() + trans);

            estadisticaFacade.edit(i);
           
        } catch (Exception e) {
            i = new Estadistica();
            i.setCompraa(compraa);
            i.setComprad(comprad);
            i.setVentaa(ventaa);
            i.setVentad(ventad);
            i.setTransacciones(trans);
            i.setFecha(fechahoy);
            
            estadisticaFacade.create(i);
        }
        
        if(em.contains(i))
            return true;

        em.flush();

        // No se creo
        return false;
    }
}

